package 多线程;

import java.security.Timestamp;

/**
 * java多线程处理原则：
 * 要么只读，要么加锁
 */
public class Main {
	public static void main(String[] args) throws InterruptedException {
		// System.out.println(Thread.currentThread().getName());
//		Runtime runtime = Runtime.getRuntime();
//		int cpuNums = runtime.availableProcessors();
//		
//		System.out.println("cup数量："+ cpuNums);
		
		// 创建线程的两种方法
		// Thread
		Cat cat = new Cat();
		cat.start();
		
		System.out.println("主线程继续执行" + Thread.currentThread().getName());
		
		for(int i = 0; i < 10; i++) {
			System.out.println("我是主线程 i="+i);
			Thread.sleep(1000);
		}
	}
}

// 注解的本质是类。
// jdbc, 多线程， 反射， 数组，链表，栈, 哈希表， 队列， 树， map, 设计模式
// java是单继承的

// 1. 继承Thread 实现run方法
// 2. 实现runnable 实现run方法
// 最基本最重要的搞明白
// start() -> start0() -> JVM

// 1. 当一个类继承了Thread类，该类可以当做线程使用
// 2. 我们会重写run方法，写上自己的业务代码
// 3. run Thread类实现了runnable接口的run方法
class Cat extends Thread {
	int times = 0;
	@Override
	public void run() {
		while(true) {
			System.out.println("喵喵， 我是小猫咪"+(times++));
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			if(times == 8) {
				break;
			}
		}		
	}
}
